package com.whsxt.code;

import java.util.Scanner;

/**
 * @author CodeYang
 * @Description 检查一个数是否为素数
 * @Date 2020/12/5 20:28
 */
public class CheckPrimeNumber {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");

        long num = scanner.nextLong();
        if (checkPrimenumber(num)){
            System.out.println("是素数(质数)");
        }
        else{
            System.out.println("不是素数");
        }

    }

    /**
     *  判断一个数 是否为素数:
     *     素数概念:质数又称素数,是指在一个大于1的自然数中，除了1和此整数自身外，不能被其他自然数整除的数
     *     素数就是只能被1和它本身整除的自然数。1既不是素数，也不是合数。素数如：2、3、5、13 17
     *    Math.sqrt(2) 根号2======= 1.4142135623730951
     *    // 优化版本
     * @param number
     * @return
     */
    static  boolean checkPrimenumber(long number){
        if (number <= 3) {
            //1 本身不是素数,但是2 是素数
            return number > 1;
            //2>1 true
        }
        for (int i = 2; i <= Math.sqrt(number) ; i++) {
            System.out.println(i+"次");
            if(number % i == 0){
                return  false;
                //如果能被不是自己的数整除,证明不是素数
            }
        }
     return  true;
    }
}
